#pragma once


#include "Input/Keys.h"
#include "Input/KeyState.h"

#include "Misc/CommonMacros.h"
#include <cstdint>

struct WHENGINE_API SKeyboardEvent
{
    uint64_t WindowID;
    EKey Key;
    EKeyState KeyState;
   
    static bool IsKeyPressed(EKey Key);

    static bool IsAnyAltDown();

    static bool IsAnyCtrlDown();

    static bool IsAnyShiftDown();

    static bool IsAnySystemDown();


    static void SetGlobalKeyState(EKey Key,EKeyState KeyState);
protected:


    // bool bIsAltDown=false;
    // bool bIsCtrlDown=false;
    // bool bIsShiftDown=false;
    // bool bIsSystemDown=false;

    static EKeyState KeyStates[(int64_t)EKey::MaxKey];

#ifdef LINUX
    friend class CLinuxPlatform;
#endif 

#ifdef WIN32
    friend class CWindowsProcedure;
#endif

};

